﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using AccesoADatos.Entidades;
using AccesoADatos;


namespace AccesoADatos
{
    public class AccesoMaquina
    {
        #region Metodos

            public AccesoMaquina()
            {
                Conexion Conexion = new Conexion();

            }


             /// <summary>
             /// Inicializa un Objeto de tipo Conexion
             /// </summary>
             /// <returns>Objeto Conexion Inicializado</returns>
             private Conexion InstanciarConexion()
             {
                 Conexion conexion = new Conexion();
                 return (conexion);
             }


             public List<Maquina> ConsultarAllStatus()
             {
                 //Boolean respuestaQuery = false;
                 Conexion bd = InstanciarConexion();
                 List<Maquina> listaStatus = new List<Maquina>();
                 SqlCommand command = new SqlCommand();

                 try
                 {
                     bd.AbrirConexionBd();
                     command.Connection = bd.ObjetoConexion();
                     command.CommandType = System.Data.CommandType.StoredProcedure; //Tipo de comando que se va a ejecutar
                     command.CommandText = "[dbo].[SELAllStatus]"; // Nombre del Procedimiento Almacenado en la Base de Datos
                     command.CommandTimeout = 10;

                     SqlDataReader reader = command.ExecuteReader();

                     while (reader.Read())
                     {
                         Maquina miMaquina = new Maquina();
                         miMaquina.IdMaquina = reader.GetInt32(0);
                         miMaquina.Status = reader["status"].ToString();
                         listaStatus.Add(miMaquina);
                         
                     }
                     return listaStatus;
                 }

                 catch (SqlException)
                 {
                     bd.CerrarConexionBd();
                     return null;
                 }

                 catch (Exception)
                 {
                     bd.CerrarConexionBd();
                     return null;
                 }
             }


             public List<Maquina> ConsultarAllMarcas()
             {
                 //Boolean respuestaQuery = false;
                 Conexion bd = InstanciarConexion();
                 List<Maquina> listaMarcas = new List<Maquina>();
                 SqlCommand command = new SqlCommand();

                 try
                 {
                     bd.AbrirConexionBd();
                     command.Connection = bd.ObjetoConexion();
                     command.CommandType = System.Data.CommandType.StoredProcedure; //Tipo de comando que se va a ejecutar
                     command.CommandText = "[dbo].[SELAllMarcas]"; // Nombre del Procedimiento Almacenado en la Base de Datos
                     command.CommandTimeout = 10;

                     SqlDataReader reader = command.ExecuteReader();

                     while (reader.Read())
                     {
                         Maquina miMaquina = new Maquina();
                         miMaquina.IdMaquina = reader.GetInt32(0);
                         miMaquina.Marca = reader["marca"].ToString();
                         listaMarcas.Add(miMaquina);

                     }
                     return listaMarcas;
                 }

                 catch (SqlException)
                 {
                     bd.CerrarConexionBd();
                     return null;
                 }

                 catch (Exception)
                 {
                     bd.CerrarConexionBd();
                     return null;
                 }
             }

             /// <summary>
             /// 
             /// </summary>
             /// <param name="usernameUsuario" name="claveUsuario"></param>
             /// <returns></returns>
             public bool AgregarMaquina(Maquina objMaquina)
             {
                 Conexion bd = InstanciarConexion();
                 SqlCommand command = new SqlCommand();
                 try
                 {
                     bd.AbrirConexionBd();
                     command.Connection = bd.ObjetoConexion();
                     command.CommandType = System.Data.CommandType.StoredProcedure; //Tipo de comando que se va a ejecutar
                     command.CommandText = "[dbo].[INSMaquina]"; // Nombre del Procedimiento Almacenado en la Base de Datos
                     command.CommandTimeout = 10;
                     command.Parameters.AddWithValue("@Marca", objMaquina.Marca);
                     command.Parameters.AddWithValue("@Status", objMaquina.Status);
                     command.Parameters.AddWithValue("@Latitud",objMaquina.Latitud);
                     command.Parameters.AddWithValue("@Longitud",objMaquina.Longitud);
                     command.Parameters.AddWithValue("@NumIdentificacion",objMaquina.NumeroIdentificacion);
                     command.Parameters.AddWithValue("@Descripcion", objMaquina.Descripcion);
                     command.Parameters.AddWithValue("@RutaImagen", objMaquina.RutaImagen);
                     
                     SqlDataReader reader = command.ExecuteReader();
                     if (reader.Read())
                     {
                         return true;

                     }
                     reader.Close();
                     bd.CerrarConexionBd();
                     return false;
                 }
                 catch (Exception e)
                 {
                     return false;
                 }
             }
            
        #endregion
    }
}
